package 单链表;

public class mergeTwoLists {

    //合并升序的链表  使用双指针的思想，先合并值较大的，当有一个合并完成之后，直接将另一个没有合并的拼接上来
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        ListNode dummy=new ListNode(-1);  //虚拟头节点 便于最后返回
        ListNode cur=dummy;
        ListNode p1=list1;
        ListNode p2=list2;
        while (p1!=null&&p2!=null){
            if (p1.val<p2.val){
                cur.next=p1;
                p1=p1.next;
            }else{
                cur.next=p2;
                p2=p2.next;
            }
            cur=cur.next; //cur每次都需要往后进行移动的
        }
        if (p1!=null){
            cur.next=p1;
        }
        if (p2!=null){
            cur.next=p2;
        }
        return  dummy.next;
    }
}
